package cn.wangjie.spark.source

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
 * 采用并行化方式，创建RDD，将本地集合存储为RDD
 */
object SparkParallelizeTest {

  def main(args: Array[String]): Unit = {
		// 1. 构建SparkContext上下为实例对象
		val sc: SparkContext = {
			// 1.a 创建SparkConf对象，设置应用属性
			val sparkConf = new SparkConf()
				.setAppName(this.getClass.getSimpleName.stripSuffix("$"))
				.setMaster("local[2]")
			// 1.b 传递SparkConf对象，创建上下文实例
			SparkContext.getOrCreate(sparkConf)
		}
		
		
		// TODO: 1、Scala中集合Seq序列存储数据
		val linesSeq: Seq[String] = Seq(
			"hadoop scala hive spark scala sql sql", //
			"hadoop scala spark hdfs hive spark", //
			"spark hdfs spark hdfs scala hive spark" //
		)
		
		// TODO: 2、并行化集合
		/*
		  def parallelize[T: ClassTag](
		      seq: Seq[T], // 序列
		      numSlices: Int = defaultParallelism  // 构建RDD的分区数目
		  ): RDD[T]
		 */
		val datasRDD: RDD[String] = sc.parallelize(linesSeq, numSlices = 2)
		println(s"RDD Partition Number = ${datasRDD.getNumPartitions}")
		
		
		// 5. 应用运行结束，关闭资源
		sc.stop()
	}
	
}
